package com.wjk.kylin.mall.common.web.stream;

import org.apache.ibatis.session.ResultHandler;

import java.util.List;
import java.util.function.Consumer;

/**
 * 流式查询 工具类
 *
 * @param <T>
 * @author wangjinkui
 */
public class StreamQueryHandler<T> {

    /**
     * @param query    查询数据
     * @param callback 查询回调
     */
    public void batchHandle(Consumer<ResultHandler<T>> query, Consumer<List<T>> callback) {
        this.batchHandle(query, callback, 1000);
    }

    /**
     * @param query     查询数据
     * @param callback  查询回调
     * @param batchSize 每一个批处理查询的数量
     */
    public void batchHandle(Consumer<ResultHandler<T>> query, Consumer<List<T>> callback, Integer batchSize) {
        DefaultResultHandler<T> result = new DefaultResultHandler<>(query, callback);
        if (batchSize > 0) {
            result.setBatchSize(batchSize);
        }
        result.batchHandle();
    }
}
